Ex08 Aplicações da DFT

Parte 1 - Filtragem no Domínio da Frequência

Dos itens abaixo a, b e c você deve fazer obrigatoriamente o item a e no mínimo mais um item: b ou c. Nada impede você de fazer os 3 itens: a, b e c.

a. Projetando filtros no domínio da frequência

Para projetar os filtros no domínio da frequência, utilize imagens sintéticas, como círculo ou quadrado ou retângulo (filtros ideais), tomando-se o cuidado para verificar se estes filtros são complexos-conjugados. Se preciso, crie uma função que retorne True, caso a imagem seja complexa conjugada e False, caso contrário. Lembre-se também que o projeto do filtro é normalmente feito no espectro ótico de Fourier, mas sua aplicação é feita com coordenadas 0 a N-1.

Teste os filtros projetados filtrando alguma imagem.

b. Filtro Butterworth

Crie uma função para projetar um filtro passa-baixas Butterworth. A função de transferência do filtro passa-baixas de Butterworth de ordem $n$ e com posição da frequência de corte a uma distância $D_0$ da origem é definida pela relação $$ H(u,v) = \frac{1}{1 + [\frac{D(u,v)}{D_0}]^{2n}}, $$ onde $n$ é a ordem do filtro. Para facilitar a implementação, podemos usar a seguinte expressão: $$ H(u,v) = \frac{1}{1 + (\sqrt{2} - 1)(\sqrt{(\frac{u}{N})^2 + (\frac{v}{M})^2)}.t_c)^{2n}}$$ com $$ u \in{[-\frac{N}{2},N - \frac{N}{2} -1]}$$ $$ v \in{[-\frac{M}{2},M - \frac{M}{2} -1]}$$ $$ t_c \in{[2, max\{N,M\}]}$$

Compare o resultado da filtragem de uma imagem usando um filtro ideal e o filtro de Butterworth.

c. Filtrando uma imagem com textura

Veja que a imagem do código de barras a seguir possui uma textura no fundo. Projete um filtro (em frequencia) que elimine esta textura, sem borrar demais a imagem.


In [2]:
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

f = mpimg.imread('../data/barcode.tif')
plt.figure(figsize=(8,8))
plt.imshow(f,cmap='gray');
plt.show()


Parte 2 - Identificando Translação/Rotação por Correlação de Fase

Dos itens abaixo a, b e c você deve fazer obrigatoriamente o item a e no mínimo mais um item: b ou c. Nada impede você de fazer os 3 itens: a, b e c.

Através da Correlação de fase é possível identificar uma translação ou uma rotação sofrida por uma imagem (veja o notebook Correlação de Fase).

a. Coordenada polar da imagem ou da DFT?

Para identificar a rotação, a imagem é transformada para coordenadas polares, para depois ser aplicada a Transformada de Fourier e então calculada a correlação de fase. Verifique se é equivalente fazer a transformada de Fourier e só depois fazer a conversão para coordenadas polares no domínio da frequência para então computar a correlação de fase;

b. Rotação e translação simultaneas

Imagine agora que uma imagem tenha sofrido rotação e translação simultaneamente. Tente agora identificar ambas transformações com esta mesma técnica. (DICA: Tente resolver o problema em 2 etapas, ou seja, aplicando 2 vezes os passos para a correlação de fase); c. (Opcional) Identifique o quão robusta é esta técnica, com relação a: ruído, variação de contraste, escala

c. Template Matching

Experimente resolver um problema de Template Matching usando correlação fase. Ou seja, recorte um pedaço de uma imagem e tente encontrar este pedaço na imagem original maior.